// server/index.js
import app from './http'
// 引入渲染模块
import renderer from './renderer'
// 创建 store 的方法
import createStore from './createStore'
import routes from '../share/routes'
import { matchRoutes } from 'react-router-config'

// 接收任何路由  并将当前路由传递给渲染模块
app.get('*', (req, res) => {
    const store = createStore()
    // 1. 请求地址 req.path
    // 2. 获取到路由配置选项
    // 3. 根据请求地址匹配出要渲染的组件的路由对象信息
    const promises = matchRoutes(routes, req.path).map(({route}) => {
        // 如何才能知道什么时候数据获取完成
        if (route.loadData) return route.loadData(store)
    })
    Promise.all(promises).then(() => {
        // 等 promise 成功后 store 就有数据了
        res.send(renderer(req, store))
    })
})